package com.bit.cfdi.web.vm.wizard;

import java.util.List;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.zkoss.zk.ui.select.annotation.VariableResolver;

import com.bit.cfdi.web.domain.DBConstants;
import com.bit.cfdi.web.domain.DatosFiscales;
import com.bit.cfdi.web.domain.Direccion;
import com.bit.cfdi.web.domain.Negocio;
import com.bit.cfdi.web.domain.Sucursal;
import com.bit.cfdi.web.utils.ByteUtils;
import com.bit.cfdi.web.vm.negocio.WrapperGiros;

@VariableResolver(org.zkoss.zkplus.spring.DelegatingVariableResolver.class)
public class WizardViewParserPaso2 {	
	
	private Logger log = LogManager.getLogger(this.getClass().getName());
	private String nombreNegocio;
	private byte[] bytesCer;
	private byte[] bytesKey;	
	
	private String rfcFiscal;
	private String razonFiscal;
	private String calleFiscal;
	private String noExteriorFiscal;
	private String noInteriorFiscal;
	private String coloniaFiscal;
	private String codigoPostalFiscal;
	private String referenciaFiscal;
	private String localidadFiscal;		
	private String ciudadFiscal;
	private String municipioFiscal;
	private String estadoFiscal;
	private String paisFiscal;
		
	private String nombreSucursal;
	private String calleSucursal;
	private String noExteriorSucursal;
	private String noInteriorSucursal;
	private String coloniaSucursal;
	private String codigoPostalSucursal;
	private String referenciaSucursal;
	private String municipioSucursal;
	private String ciudadSucursal;
	private String paisSucursal;
	private String estadoSucursal;
	private String localidadSucursal;
	
	private List<WrapperGiros> listGirosSelected;
	
	public String getNombreNegocio() {
		return nombreNegocio;
	}
	public void setNombreNegocio(String nombreNegocio) {
		this.nombreNegocio = nombreNegocio;
	}
	
	public String getRfcFiscal() {
		return rfcFiscal;
	}
	public void setRfcFiscal(String rfcFiscal) {
		this.rfcFiscal = rfcFiscal;
	}
	
	public String getRazonFiscal() {
		return razonFiscal;
	}
	public void setRazonFiscal(String razonFiscal) {
		this.razonFiscal = razonFiscal;
	}
	
	public String getCalleFiscal() {
		return calleFiscal;
	}
	public void setCalleFiscal(String calleFiscal) {
		this.calleFiscal = calleFiscal;
	}
	
	public String getNoExteriorFiscal() {
		return noExteriorFiscal;
	}
	public void setNoExteriorFiscal(String noExteriorFiscal) {
		this.noExteriorFiscal = noExteriorFiscal;
	}
	
	public String getNoInteriorFiscal() {
		return noInteriorFiscal;
	}
	public void setNoInteriorFiscal(String noInteriorFiscal) {
		this.noInteriorFiscal = noInteriorFiscal;
	}
	
	public String getColoniaFiscal() {
		return coloniaFiscal;
	}
	public void setColoniaFiscal(String coloniaFiscal) {
		this.coloniaFiscal = coloniaFiscal;
	}
	
	public String getCodigoPostalFiscal() {
		return codigoPostalFiscal;
	}
	public void setCodigoPostalFiscal(String codigoPostalFiscal) {
		this.codigoPostalFiscal = codigoPostalFiscal;
	}
	
	public String getReferenciaFiscal() {
		return referenciaFiscal;
	}
	public void setReferenciaFiscal(String referenciaFiscal) {
		this.referenciaFiscal = referenciaFiscal;
	}
	
	public String getMunicipioFiscal() {
		return municipioFiscal;
	}
	public void setMunicipioFiscal(String municipioFiscal) {
		this.municipioFiscal = municipioFiscal;
	}	
	
	public String getLocalidadFiscal() {
		return localidadFiscal;
	}
	public void setLocalidadFiscal(String localidadFiscal) {
		this.localidadFiscal = localidadFiscal;
	}
	
	public String getCiudadFiscal() {
		return ciudadFiscal;
	}
	public void setCiudadFiscal(String ciudadFiscal) {
		this.ciudadFiscal = ciudadFiscal;
	}
	public String getEstadoFiscal() {
		return estadoFiscal;
	}
	public void setEstadoFiscal(String estadoFiscal) {
		this.estadoFiscal = estadoFiscal;
	}
	public String getPaisFiscal() {
		return paisFiscal;
	}
	public void setPaisFiscal(String paisFiscal) {
		this.paisFiscal = paisFiscal;
	}
	public byte[] getBytesCer() {
		return bytesCer;
	}
	public void setBytesCer(byte[] bytesCer) {
		this.bytesCer = bytesCer;
	}
	
	public byte[] getBytesKey() {
		return bytesKey;
	}
	public String getNombreSucursal() {
		return nombreSucursal;
	}
	
	public void setNombreSucursal(String nombreSucursal) {
		this.nombreSucursal = nombreSucursal;
	}
	public String getCalleSucursal() {
		return calleSucursal;
	}
	
	public void setCalleSucursal(String calleSucursal) {
		this.calleSucursal = calleSucursal;
	}
	public void setBytesKey(byte[] bytesKey) {
		this.bytesKey = bytesKey;
	}
	
	public String getNoExteriorSucursal() {
		return noExteriorSucursal;
	}
	public void setNoExteriorSucursal(String noExteriorSucursal) {
		this.noExteriorSucursal = noExteriorSucursal;
	}
	
	public String getNoInteriorSucursal() {
		return noInteriorSucursal;
	}
	public void setNoInteriorSucursal(String noInteriorSucursal) {
		this.noInteriorSucursal = noInteriorSucursal;
	}
	
	public String getColoniaSucursal() {
		return coloniaSucursal;
	}
	public void setColoniaSucursal(String coloniaSucursal) {
		this.coloniaSucursal = coloniaSucursal;
	}
	
	public String getCiudadSucursal() {
		return ciudadSucursal;
	}
	public void setCiudadSucursal(String ciudadSucursal) {
		this.ciudadSucursal = ciudadSucursal;
	}
	public String getCodigoPostalSucursal() {
		return codigoPostalSucursal;
	}
	public void setCodigoPostalSucursal(String codigoPostalSucursal) {
		this.codigoPostalSucursal = codigoPostalSucursal;
	}
	
	public String getReferenciaSucursal() {
		return referenciaSucursal;
	}
	public void setReferenciaSucursal(String referenciaSucursal) {
		this.referenciaSucursal = referenciaSucursal;
	}
	
	public String getMunicipioSucursal() {
		return municipioSucursal;
	}
	public void setMunicipioSucursal(String localidadSucursal) {
		this.municipioSucursal = localidadSucursal;
	}
	
	public String getPaisSucursal() {
		return paisSucursal;
	}
	public void setPaisSucursal(String paisSucursal) {
		this.paisSucursal = paisSucursal;
	}
	
	public String getEstadoSucursal() {
		return estadoSucursal;
	}
	public void setEstadoSucursal(String estadoSucursal) {
		this.estadoSucursal = estadoSucursal;
	}
	public String getLocalidadSucursal() {
		return localidadSucursal;
	}
	public void setLocalidadSucursal(String localidadSucursal) {
		this.localidadSucursal = localidadSucursal;
	}
	
	public Negocio getNegocio() {
		Negocio negocio = new Negocio();	
		negocio.setStatus(DBConstants.STATUS_ACTIVE);
		negocio.setNombre(nombreNegocio);
		negocio.setNegCer(ByteUtils.toByteWrapper(bytesCer));
		negocio.setNegKey(ByteUtils.toByteWrapper(bytesKey));														
		
		DatosFiscales df = new DatosFiscales();
		df.setRfc(rfcFiscal);
		df.setRazon(razonFiscal);		
		
		Direccion dirf = new Direccion();
		dirf.setCalle(calleFiscal);
		dirf.setNoInterior(noExteriorFiscal);
		dirf.setNoExterior(noExteriorFiscal);
		dirf.setColonia(coloniaFiscal);
		dirf.setCodigoPostal(codigoPostalFiscal);
		dirf.setReferencia(referenciaFiscal);
		dirf.setPais(paisFiscal);
		dirf.setEstado(estadoFiscal);
		dirf.setCiudad(ciudadFiscal);
		dirf.setMunicipio(municipioFiscal);
		dirf.setLocalidad(localidadFiscal);
		df.setDireccion(dirf);								
		
		Sucursal matriz = new Sucursal();
		matriz.setDireccion(new Direccion());
		matriz.setTipo(Sucursal.TIPO_MATRIZ);
		matriz.setNegocio(negocio);
		
		Direccion dirs = new Direccion();
		dirs.setCalle(calleSucursal);
		dirs.setNoExterior(noInteriorSucursal);
		dirs.setNoInterior(noInteriorSucursal);
		dirs.setColonia(coloniaSucursal);
		dirs.setCodigoPostal(codigoPostalSucursal);
		dirs.setReferencia(referenciaSucursal);
		dirs.setPais(paisSucursal);
		dirs.setEstado(estadoSucursal);
		dirs.setCiudad(ciudadSucursal);
		dirs.setMunicipio(municipioSucursal);
		dirs.setLocalidad(localidadSucursal);		
		
		Sucursal sucursal = new Sucursal();
		sucursal.setDireccion(dirs);
		sucursal.setTipo(Sucursal.TIPO_SUCURSAL);
		sucursal.setNegocio(negocio);										
		
		negocio.getSucursales().add(sucursal);
		negocio.getSucursales().add(matriz);		
		negocio.setDatosFiscales(df);					
		return negocio;
	}
	public List<WrapperGiros> getListGirosSelected() {
		return listGirosSelected;
	}
	public void setListGirosSelected(List<WrapperGiros> listGirosSelected) {
		this.listGirosSelected = listGirosSelected;
	}
}
